<html>
    <head>
        <title>
             uni.chooseLocation(OBJECT)
        </title>
    </head>
    <body>
        <script>
             /*
                二、   uni.chooseLocation(OBJECT)
                
                            1、概述
                                            
                                    打开地图选择位置。chooseLocation会使用项目配置的地图服务商来展示地图，地图服务商支持情况参考：map组件。（https://uniapp.dcloud.net.cn/component/map.html）

                            2、平台差异说明

                                    App	H5	微信小程序	支付宝小程序	百度小程序	抖音小程序、飞书小程序	QQ小程序	快手小程序	京东小程序	元服务
                                    √	√	√	        √	            √	        √	                √	        x	        x	        x

                            3、chooseLocation 兼容性

                                        HarmonyOS
                                        HBuilderX 4.23

                            4、地图服务商说明

                                        https://uniapp.dcloud.net.cn/component/map.html

                            5、OBJECT 参数说明

                                                参数名	            类型	    必填	        说明	                                            平台差异说明

                                            ①、latitude	          Number	    否	        目标地纬度	                                微信小程序（2.9.0+）、H5-Vue3（3.2.10+）
                                            ‘’
                                            ②、longitude	      Number	    否	        目标地经度	                                微信小程序（2.9.0+）、H5-Vue3（3.2.10+）

                                            ③、keyword	          String	    否	        搜索关键字，                                仅App平台支持	

                                            ④、useSecureNetwork	  Boolea	    否	        是否通过安全网络调用地点搜索、
                                                                                            逆地址解析，默认false

                                            ⑤、success	          Function	    是	        接口调用成功的回调函数，返回内容详见返回参数说明。	

                                            ⑥、fail	              Function	    否	        接口调用失败的回调函数（获取定位失败、用户取消等情况下触发）

                                            ⑦、complete	          Function	    否	        接口调用结束的回调函数（调用成功、失败都会执行）
                                            
                                            
                             6、腾讯地图服务商说明

                                        出于安全考虑，安卓、iOS端manifest.json内配置的key仅用来展示地图，

                                        ni.chooseLocation所依赖的地点搜索、逆地址解析功能需要通过uniCloud云对象uni-map-co来调用，

                                        开发者可以通过安全网络来保障服务端api不被他人盗用。

                                        鸿蒙平台由于暂不支持安全网络，所以chooseLocation依然使用manifest.json内配置的key来调用地点搜索、逆地址解析。



                                        默认情况下，uni.chooseLocation不会使用安全网络请求uni-map-co。如果需要使用安全网络请求uni-map-co，需按如下步骤操作：

                                                    ①、项目关联uniCloud服务空间

                                                    ②、参考uni-map-co文档导入uni-map-common插件，并配置好地图的key。

                                                    ③、参考安全网络文档，将应用关联到服务空间。

                                                    ④、在项目manifest.json中安卓/iOS模块配置中勾选安全网络模块。

                                                    ⑤、修改uni-map-co入口文件index.obj.js内添加如下代码，拦截非法请求：

                                                                module.exports = {
                                                                    _before: function() {
                                                                        const clientInfo = this.getClientInfo()
                                                                        const methodName = this.getMethodName()
                                                                        const secretType = clientInfo.secretType
                                                                        if(methodName === 'chooseLocation' && secretType !== 'both' && secretType !== 'request') {
                                                                        throw new Error('Unauthorized client')
                                                                        }
                                                                    }
                                                                
                                                                
                                                    ⑥、上传uni-map-co云对象、uni-config-center公共模块、uni-map-common公共模块。  

                                                    ⑦、调用uni.chooseLocation时，将useSecureNetwork设置为true。


                                             ★、注意

                                                    因平台差异，如果SDK配置百度地图，需要设置 keyword，才能显示相关地点
                                                    非 weex 编译模式不支持百度地图

                                             ★、success 返回参数说明

                                                           参数	                    说明

                                                        ①、name	                       位置名称

                                                        ②、address	                   详细地址

                                                        ③、latitude	                   纬度，浮点数，范围为-90~90，负数表示南纬，使用 gcj02 国测局坐标系。

                                                        ④、longitude	               经度，浮点数，范围为-180~180，负数表示西经，使用 gcj02 国测局坐标系。

                            7、示例

                                    uni.chooseLocation({
                                        success: function (res) {
                                            console.log('位置名称：' + res.name);
                                            console.log('详细地址：' + res.address);
                                            console.log('纬度：' + res.latitude);
                                            console.log('经度：' + res.longitude);
                                        }
                                    });

                            8、注意：

                                            <1>、不同端，使用地图选择时基于的底层地图引擎不一样，详见地图map组件的地图服务商支持。

                                                    ①、app 中也可以使用百度定位，在 manifest 中配置，打包后生效。

                                                    ②、app-nvue 里只能用高德定位和Google地图(3.4+)，不能用百度地图。
                                                    
                                                        另外选择地图、查看地图位置的API也仅支持高德地图和Google地图(3.4+)。所以App端如无特殊必要，建议使用高德地图。

                                            <2>、H5 端 使用地图和定位相关，需要在 manifest.json 内配置腾讯或谷歌等三方地图服务商申请的秘钥（key）。

                                            <3>、微信内置浏览器 中可使用微信js sdk，详见 https://ask.dcloud.net.cn/article/35380

                                            <4>、chooseLocation 属于封装型API，开发者若觉得不够灵活，可自行基于原始的 map 组件进行封装。插件市场已经有各种封装样例了


                                            <5>、微信小程序在2023年10月17日之后，使用API需要配置隐私协议
            */
        </script>
    </body>
</html>